import { useAdminStore } from '@/stores/admin'
import { ElMessage } from 'element-plus'

// 权限路由映射
const permissionMap = {
  '/admin/data-display': 'dashboard',
  '/admin/book-manage': 'book_manage',
  '/admin/report-manage': 'report_manage',
  '/admin/user-manage': 'user_manage',
  '/admin/admin-manage': 'super_admin',
  '/admin/admin-profile': null,     
  '/admin/admin-password': null    
}

// 管理员权限守卫
export function setupAdminPermissionGuard(router) {
  router.beforeEach((to, from, next) => {
    const adminStore = useAdminStore()
    
    // 如果不是管理后台路由，直接放行
    if (!to.path.startsWith('/admin')) {
      next()
      return
    }

    // 登录页面和无权限页面直接放行
    if (to.path === '/admin/login' || to.path === '/admin/no-permission') {
      next()
      return
    }

    // 检查路由权限
    const requiredPermission = permissionMap[to.path]
    if (requiredPermission) {
      // console.log('Required permission:', requiredPermission)
      // console.log('Current permissions:', adminStore.permissions)
      // console.log('Is super admin:', adminStore.adminInfo?.is_super)
      // console.log('Permission IDs:', adminStore.permissions.map(p => p.id))

      // 如果有超级管理员权限（id=1），可以访问除了管理员管理外的所有页面
      const hasSuperAdminPermission = adminStore.permissions.some(p => p.id === 1)
      if (hasSuperAdminPermission && to.path !== '/admin/admin-manage') {
        next()
        return
      }

      // 系统管理员可以访问所有页面
      if (adminStore.adminInfo?.is_super) {
        next()
        return
      }

      // 检查具体权限
      if (!adminStore.hasPermission(requiredPermission)) {
        ElMessage.error('无权访问该页面')
        next('/admin/no-permission')
        return
      }
    }

    next()
  })
} 